/**
 * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
 */
package com.z100h.supplychain.core.biz.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.jeeplus.core.persistence.BaseMapper;
import com.jeeplus.core.persistence.annotation.MyBatisMapper;
import com.z100h.supplychain.core.biz.entity.Resource;
import com.z100h.supplychain.core.biz.entity.ResourceDetail;

/**
 * 产品资源MAPPER接口
 * @author madara
 * @version 2019-01-04
 */
@MyBatisMapper
public interface ResourceMapper extends BaseMapper<Resource> {

	/**
	 * 批量插入资源
	 * @param resource
	 */
	public void addBatchResource(Resource resource);

	/**
	 * 插入资源
	 * @param resource
	 */
	public void addResource(Resource resource);

	/**
	 * 检查资源是否被锁定
	 * @param param
	 * @return res
	 */
	public List<String> checkResourceLockState(Map<String, Object> param);

	/**
	 * 
	 * 检查资源凭据锁和出库锁是否被锁定
	 * 
	 * @param param
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月17日 下午2:31:35
	 */
	public List<String> checkResourceLockStateAndStockoutLockState(Map<String, Object> param);

	/**
	 * 根据凭证id 检查是否被锁定
	 * @param param
	 * @return
	 */
	public List<String> checkResourceLockStateByEid(Map<String, Object> param);

	/**
	 * 
	 * 根据凭证id 检查资源凭据锁和出库锁是否被锁定
	 * 
	 * @param param
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月17日 下午2:32:54
	 */
	public List<String> checkResourceLockStateAndStockoutLockStateByEid(Map<String, Object> param);

	/**
	 * 锁定资源
	 * @param param
	 */
	public void lockResources(Map<String, Object> param);

	/**
	 * 根据凭证id 锁定资源
	 * @param param
	 */
	public void lockResourceByEid(Map<String, Object> param);

	/**
	 * 解锁资源
	 * @param param
	 */
	public void unlockResources(Map<String, Object> param);

	/**
	 * 根据凭证id 解锁资源
	 * @param param
	 */
	public void unlockResourceByEid(Map<String, Object> param);

	/**
	 * 修改资源仓库id
	 * @param param
	 */
	public void updateResourcesToWarehouseId(Map<String, Object> param);

	/**
	 * 修改资源凭证id
	 * @param param
	 */
	public void updateResourcesToEvidenceId(Map<String, Object> param);

	/**
	 * 
	 * 查询资源信息
	 * 
	 * @param resourceDetail
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月11日 上午10:41:31
	 */
	public List<ResourceDetail> findResourceDetailByIds(@Param("ids") List<String> ids);

	/**
	 * 
	 * 查询资源列表
	 * 
	 * @param resourceDetail
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月14日 下午7:17:03
	 */
	public List<ResourceDetail> findResourceDetailList(ResourceDetail resourceDetail);

	/**
	 * 检查出库资源id
	 * @param ids
	 * @return
	 */
	public List<ResourceDetail> checkResourceIdsByStockOut(@Param("ids") List<String> ids);

	/**
	 * 
	 * 修改出库锁状态
	 * 
	 * @param ids
	 * @param state
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月19日 上午11:54:40
	 */
	public void updateStockoutState(@Param("ids") List<String> ids, @Param("state") Integer state);

	/**
	 * 
	 * 校验资源
	 * 
	 * @param param
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月19日 下午3:49:52
	 */
	public List<String> checkResource(Map<String, Object> param);

	/**
	 * 
	 * 根据eid查询资源编码集合
	 * 
	 * @param evidenceId
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月19日 下午5:17:01
	 */
	public List<String> findIdByEid(String evidenceId);

	/**
	 * 
	 * 查询资源sku数量
	 * 
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年1月30日 下午3:45:01
	 */
	public List<ResourceDetail> findResourceCountByIds(@Param("ids") List<String> ids);

	/**
	 * 
	 * 查询可用的sku资源数量
	 * 
	 * @param skuId
	 * @return
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年5月15日 上午10:05:27
	 */
	public Integer getUsableResourceBySkuId(@Param("skuId") Integer skuId, @Param("companyId") String companyId);

	/**
	 * 
	 * 根据skuId出库
	 * 
	 * @param skuId
	 * @param lockState
	 * @param evidenceId
	 * @param amount
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年5月15日 上午10:41:10
	 */
	public void updateResourceStockout(@Param("skuId") Integer skuId, @Param("lockState") Integer lockState,
			@Param("evidenceId") String evidenceId, @Param("amount") Integer amount,
			@Param("companyId") String companyId);

	/**
	 * 
	 * 根据skuId出库
	 * 
	 * @param skuId
	 * @param lockState
	 * @param evidenceId
	 * @param amount
	 * @author: Fyh - 1009173473@qq.com 
	 * @date: Created on 2019年5月15日 上午10:41:10
	 */
	public void updateResourceStockoutToErp(@Param("erpResId") String erpResId, @Param("skuId") Integer skuId,
			@Param("lockState") Integer lockState, @Param("evidenceId") String evidenceId,
			@Param("amount") Integer amount, @Param("companyId") String companyId);

}